{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Dynamic Programming\n",
    "\n",
    "We will be using dynamic programming on sample 4x4 grid world and study **Policy Evaluation** \n",
    "\n",
    "![GridWorld](./images/gridworld.png \"Grid World\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Policy Iteration (Prediction)\n",
    "\n",
    "Policy iteration is carried out by converting Bellman Expectation equation for state values to an iterative assignment equation. The backup digram is given below. Pseudo code for the algorithm is given in Fig 3-3\n",
    "\n",
    "![Bellman backup](./images/policy_iteration_backup.png \"Bellman Backup\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Initial imports and enviroment setup\n",
    "import numpy as np\n",
    "import sys\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "sns.set()\n",
    "\n",
    "# create grid world invironment\n",
    "from gridworld import GridworldEnv\n",
    "env = GridworldEnv()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Policy Iteration\n",
    "\n",
    "def policy_eval(policy, env, discount_factor=1.0, theta=0.00001):\n",
    "    \"\"\"\n",
    "    Evaluate a policy given an environment.\n",
    "\n",
    "    Args:\n",
    "        policy:[S, A]shaped matrix representing the policy. Random in our case\n",
    "        env: OpenAI env. env.P -> transition dynamics of the environment.\n",
    "            env.P[s][a] [(prob, next_state, reward, done)].\n",
    "            env.nS is number of states in the environment.\n",
    "            env.nA is number of actions in the environment.\n",
    "        theta: Stop iteration once value function change is\n",
    "            less than theta for all states.\n",
    "        discount_factor: Gamma discount factor.\n",
    "\n",
    "    Returns:\n",
    "        Vector of length env.nS representing the value function.\n",
    "    \"\"\"\n",
    "    # Start with a (all 0) value function\n",
    "    V = np.zeros(env.nS)\n",
    "    V_new = np.copy(V)\n",
    "    while True:\n",
    "        delta = 0\n",
    "        # For each state, perform a \"backup\"\n",
    "        for s in range(env.nS):\n",
    "            v = 0\n",
    "            # Look at the possible next actions\n",
    "            for a, pi_a in enumerate(policy[s]):\n",
    "                # For each action, look at the possible next states...\n",
    "                for prob, next_state, reward, done in env.P[s][a]:\n",
    "                    # Calculate the expected value as per backup diagram\n",
    "                    v += pi_a * prob * \\\n",
    "                        (reward + discount_factor * V[next_state])\n",
    "            # How much our value function changed (across any states)\n",
    "            V_new[s] = v\n",
    "            delta = max(delta, np.abs(V_new[s] - V[s]))\n",
    "        V = np.copy(V_new)\n",
    "        # Stop if change is below a threshold\n",
    "        if delta < theta:\n",
    "            break\n",
    "    return np.array(V)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Custom print to show state values inside the grid\n",
    "def grid_print(V, k=None):\n",
    "    ax = sns.heatmap(V.reshape(env.shape),\n",
    "                     annot=True, square=True,\n",
    "                     cbar=False, cmap='Blues',\n",
    "                     xticklabels=False, yticklabels=False)\n",
    "\n",
    "    if k:\n",
    "        ax.set(title=\"K = {0}\".format(k))\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create a random policy\n",
    "random_policy = np.ones([env.nS, env.nA]) / env.nA\n",
    "\n",
    "# run policy iteration for random policy\n",
    "V_pi = policy_eval(random_policy, env, discount_factor=1.0, theta=0.00001)\n",
    "\n",
    "# Print policy\n",
    "grid_print(V_pi.reshape(env.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Convergence\n",
    "\n",
    "Let us now study the convergence of values as we iterate. We will modify `policy_eval` to print the values of states as we iterate. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def policy_eval_withprint(\n",
    "    policy, env,\n",
    "    discount_factor=1.0,\n",
    "    theta=0.00001,\n",
    "    print_at=[]\n",
    "):\n",
    "    \"\"\"\n",
    "    Evaluate a policy given an environment and\n",
    "    a full description of the environment's dynamics.\n",
    "\n",
    "    Args:\n",
    "        policy: [S, A]shaped matrix representing the policy. Random in our case\n",
    "        env: OpenAI env. env.P -> transition dynamics of the environment.\n",
    "            env.P[s][a] [(prob, next_state, reward, done)].\n",
    "            env.nS is number of states in the environment.\n",
    "            env.nA is number of actions in the environment.\n",
    "        theta: Stop evaluation once value function change is\n",
    "            less than theta for all states.\n",
    "        discount_factor: Gamma discount factor.\n",
    "\n",
    "    Returns:\n",
    "        Vector of length env.nS representing the value function.\n",
    "    \"\"\"\n",
    "    # Start with a (all 0) value function\n",
    "    k = 0\n",
    "    V = np.zeros(env.nS)\n",
    "    V_new = np.copy(V)\n",
    "    while True:\n",
    "        k += 1\n",
    "        delta = 0\n",
    "        # For each state, perform a \"backup\"\n",
    "        for s in range(env.nS):\n",
    "            v = 0\n",
    "            # Look at the possible next actions\n",
    "            for a, pi_a in enumerate(policy[s]):\n",
    "                # For each action, look at the possible next states...\n",
    "                for prob, next_state, reward, done in env.P[s][a]:\n",
    "                    # Calculate the expected value as per backup diagram\n",
    "                    v += pi_a * prob * \\\n",
    "                        (reward + discount_factor * V[next_state])\n",
    "            # How much our value function changed (across any states)\n",
    "            V_new[s] = v\n",
    "            delta = max(delta, np.abs(V_new[s] - V[s]))\n",
    "\n",
    "        V = np.copy(V_new)\n",
    "        # print grid for specified iteration values\n",
    "        if k in print_at:\n",
    "            grid_print(V.reshape(env.shape), k=k)\n",
    "        # Stop if change is below a threshold\n",
    "        if delta < theta:\n",
    "            break\n",
    "    grid_print(V.reshape(env.shape), k=k)\n",
    "    return np.array(V)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# run policy iteration for random policy and print interim state values\n",
    "V_pi = policy_eval_withprint(\n",
    "        random_policy,\n",
    "        env,\n",
    "        discount_factor=1.0,\n",
    "        theta=0.00001,\n",
    "        print_at=[1, 2, 3, 10, 50, 100])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Conclusion\n",
    "\n",
    "We see that state values start with -1 after first iteration. And then they slowly start to converge to the value $ V_{\\pi}(S) $. By 50 iteration, they are fairly close. By 100th iteration, the values differ only in decimal values. Finally it takes about 200 iterations for the values to converge wherein the change in values during an iteration falls below the specified threshold 0.00001."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
